"""
    读取文件
"""
import configparser
import json
import os.path
import yaml


def getProjectRoot():
    print("开始获取项目根目录")

   #根据当前文件的路径(__file__),获取工程路径
   # os.path.realpath 获取当前执行脚本的绝对路径。
    current_file_path = os.path.realpath(__file__) #file_reader.py
    print("获取当前文件",current_file_path)
   #  os.path.dirname 去掉文件名，返回目录
    current_dir_path = os.path.dirname(current_file_path) #caw
    print("获取当前文件所在的目录",current_file_path)
   #os.path.dirname   去掉文件名，返回目录
    current_project_path = os.path.dirname(current_dir_path)  #zonghe
    print("获取文件根目录",current_project_path)
    return current_project_path

def read_config(option,section = 'env'):
    print("读取test.ini文件")
    print(getProjectRoot())
    ini_file_path = getProjectRoot()+r"\test.ini"
    config = configparser.ConfigParser()   #创建一个实例
    config.read(ini_file_path)  #读取test.ini路径

    return config.get(section,option)

def read_yaml(file_name):
    #拼接yaml数据文件的路径
    file_path = getProjectRoot()+r"\test_data\\"+file_name
    with open(file_path,mode='r',encoding='utf-8')as f:
        c = f.read()

    # yaml5.1版本后弃用了yaml.load(file)这个用法，因为觉得很不安全，5.1版本之后就修改了需要指定Loader，通过默认加载器（FullLoader）禁止执行任意函数
    # Loader=yaml.FullLoader 加上这行代码，告警就没了
    return  yaml.load(c,Loader=yaml.FullLoader)

if __name__ == '__main__':
    print(read_config("base_url"))
    print(read_config("test","other"))
    print(read_config("db_info"))
    #  json.loads 将str类型的数据转换为dict类型
    db_info = json.loads(read_config("db_info"))

    print(db_info["host"])
    y = read_yaml("register_fail_data.yaml")
    print(y)
    for y1 in y:
        print(y1["data"])